import pandas as pd
# Rutas a los archivos CSV
archivo_reflectancias = "datos\\base_de_datos_gis.csv" # contiene: fecha,punto,pixel,banda,reflect,longitud,latitud
archivo_parametros = "datos\\base_de_datos_lab.csv" # contiene: fecha,longitud,latitud,param,valor
# Leer los archivos
df_reflect = pd.read_csv(archivo_reflectancias)
df_param = pd.read_csv(archivo_parametros)
# Filtrar los parámetros "secchi"
df_secchi = df_param[df_param["param"].str.lower() == "secchi"]
# Merge por fecha y coordenadas
merged = pd.merge(
df_secchi,
df_reflect,
on=["fecha", "latitud", "longitud"],
how="inner"
)
# Pivotear la tabla para poner bandas como columnas
tabla_final = merged.pivot_table(
index=["param", "fecha", "longitud", "latitud", "valor"],
columns="banda",
values="reflect"
).reset_index()
# Reordenar columnas: param | B01 | B02 | ... | B8A
bandas = ['B01', 'B02', 'B03', 'B04', 'B05', 'B06', 'B07', 'B08', 'B11', 'B12', 'B8A']
columnas_finales = ['valor'] + bandas
# Crear Tabla final
df = tabla_final[columnas_finales]
# Guardar excel para pruebas finales
salida_excel = ".//datos//tabla_final.xlsx"
df.to_excel(salida_excel, index=False)Desarrollo integral de las ecuaciones y modelos de regresión
1 Revisión bibliográfica
Esta revisión tiene como objetivo identificar los enfoques más comunes en la literatura, los tipos de datos utilizados y las variables espectrales que se consideran más relevantes para este tipo de estimaciones.
1.1 Profundidad de disco de Secchi
La profundidad de visibilidad del disco de Secchi \((SDD)\) es una medida ampliamente utilizada para evaluar la transparencia del agua. Se define como la profundidad en metros a la cual un disco blanco circular desaparece al dejarlo descender en un cuerpo de agua.
Esta variable es un indicador indirecto de la calidad del agua, ya que se relaciona con la concentración de sedimentos en suspensión, fitoplancton y otros materiales particulados. Continua siendo utilizado debido a la simplicidad y rango de aplicación universal del método, además de tratarse de un parámetro fácilmente entendible por el público.
1.2 Métodos tradicionales de estimación
En las últimas décadas, se han desarrollado múltiples ecuaciones empíricas y modelos basados en datos in situ y sensores remotos para estimar esta profundidad de manera eficiente y a gran escala. El objetivo de recopilar es identificar patrones comunes, variables predictoras relevantes y estrategias metodológicas empleadas.
| Nombre | Variable | Formula | Muestras | R² |
|---|---|---|---|---|
| Dekker and Peters | \(\mathrm{ln(SDD)}\) | \(\mathrm{ln(Red)}\) | 15 | 0.86 |
| Dominguez Gomez et al. | \(\mathrm{SDD}\) | \(\mathrm{(Green)^x}\) | 16 | 0.90 |
| Giardino et al. | \(\mathrm{SDD}\) | \(\mathrm{Blue/Green}\) | 4 | 0.85 |
| Kloiber et al. | \(\mathrm{ln(SDD)}\) | \(\mathrm{Blue/Red + Blue}\) | 374 | 0.93 |
| Lathrop and Lillesand | \(\mathrm{ln(SDD)}\) | \(\mathrm{Green}\) | 9 | 0.98 |
| Mancino et al. | \(\mathrm{SDD}\) | \(\mathrm{Red/Green + Blue/Green + Blue}\) | 60 | 0.82 |
En la mayoría de los casos la relación entre \(SDD\) y la intensidad de la luz es no lineal, por lo que se utiliza \(ln(SDD)\) para realizar la regresión.
La correlación con la banda roja puede explicarse causalmente por la correlación positiva directa entre la reflectancia en el rojo y la carga bruta de partículas que induce la dispersión de partículas. De manera que mientras que la claridad del agua \((SDD)\) desciende, la intensidad en el rojo aumenta [2].
Como referencia se presentan las propiedades de las distintas bandas de la plataforma espacial Sentinel-2:
| Sentinel-2A | Sentinel-2B | ||||
|---|---|---|---|---|---|
| Banda | Resolución espacial (m) | Longitud de onda (nm) | Ancho de banda (nm) | Longitud de onda (nm) | Ancho de banda (nm) |
| \(\mathrm{B01}\) (aerosol) | 60 | 442.7 | 20 | 442.3 | 20 |
| \(\mathrm{B02}\) (blue) | 10 | 492.7 | 65 | 492.3 | 65 |
| \(\mathrm{B03}\) (green) | 10 | 559.8 | 35 | 558.9 | 35 |
| \(\mathrm{B04}\) (red) | 10 | 664.6 | 38 | 664.9 | 31 |
| \(\mathrm{B05}\) (red edge) | 20 | 794.1 | 14 | 703.8 | 15 |
| \(\mathrm{B06}\) | 20 | 748.5 | 14 | 739.1 | 13 |
| \(\mathrm{B07}\) | 20 | 782.8 | 19 | 779.7 | 19 |
| \(\mathrm{B08}\) (NIR) | 10 | 832.8 | 105 | 832.9 | 104 |
| \(\mathrm{B8A}\) | 20 | 864.7 | 21 | 864.0 | 21 |
| \(\mathrm{B09}\) | 60 | 945.1 | 19 | 943.2 | 20 |
| \(\mathrm{B10}\) | 60 | 1373.5 | 29 | 1376.9 | 29 |
| \(\mathrm{B11}\) (SWIR 1) | 20 | 1613.7 | 90 | 1616.4 | 94 |
| \(\mathrm{B12}\) (SWIR 2) | 20 | 2292.4 | 174 | 2185.7 | 184 |
1.3 Regresión lineal
En estadística, la regresión lineal es un modelo matemático usado para aproximar la relación de dependencia entre una variable dependiente \(Y\) con \(m\) variables independientes \(X_i\). Este modelo puede ser expresado como:
\[ Y = \beta_0 + \beta_1 X_1 + \cdots + \beta_m X_m\]
donde:
- \(Y\) es la variable dependiente o variable de respuesta.
- \(X_1,X_2,...X_m\) son las variables explicativas, independientes o regresoras.
- \(\beta_0,\beta_1,\beta_2,...\beta_m\) son los parámetros del modelo, miden la influencia que las variables explicativas tienen sobre el regrediendo.
1.3.1 Selección de variables
La seleccion de variables y características es el foco de mucha investigación. El objetivo de la selección de variables es mejorar el rendimiento de predicción de los predictores y proporcionar una mejor comprensión del proceso subyacente que generó los datos.
La identificación de las variables más relevantes para incluir o excluir en un modelo predictivo es un paso fundamental en cualquier investigación rigurosa, especialmente cuando se busca construir modelos con alto poder explicativo y capacidad de generalización.
Comprender qué variables contribuyen en mayor medida a la calidad de las predicciones permite no solo mejorar el desempeño del modelo, sino también interpretar con mayor claridad los fenómenos que se están estudiando.
No existe una forma segura de definir la importancia de una variable puesto que la utilidad de la misma depende del modelo implementado y de las demás variables con las que interactua: una variable que es completamente inutil por si misma puede resultar en una mejora del rendimiento significativa cuando es considerada junto con otras variables [3].
A pesar de las dificultades existen estrategias útiles para determinar un subconjunto de variables útiles para la predicción. Tal es el caso de los métodos forward selection y backwards elimination. En forward selection, las variables son progresivamente incorporadas, evaluando el modelo al paso de cada una, mientras que en backwards elimination uno empieza con el conjunto entero de variables y progresivamente elimina las menos prometedoras.
Una forma de implementación de forward selection es por empezar por un modelo exento de variables independientes, pero cuyo término independiente sea la media de las variables de respuesta. A partir de este valor se calcula el residuo como la diferencia entre el valor verdadero \(Y\) y el valor predecido \(Y_{pred}\).
\[r = Y - Y_{pred}\]
Seguidamente, se computa la correlación entre cada variable independiente \(X_i\) con el residuo y se incorpora al modelo la variable con la mayor correlación absoluta. El proceso se repite esta vez con las predicciones del nuevo modelo y se continua hasta alcanzar una desempeño deseado o un número determinado de variables. Este método fue utilizado satisfactoriamente en investigaciones previas [4].
Una herramienta útil para ayudar en la selección de variables es una matriz de correlación. Dos variables prefectamente correlacionadas resultan redundantes en el sentido de que añadir ambas no aporta información adicional. Sin embargo, una correlación muy alta entre variables (o anti-correlación) no significa ausencia de complementariedad.
1.3.2 Generación de características lineales y no lineales
Incluir nuevas variables a partir de las originales, como productos, cocientes o transformaciones no lineales (por ejemplo, logaritmos, o raíces cuadradas) permite capturar relaciones más complejas entre las variables independientes y la variable objetivo. Por ejemplo, si se dispone de datos espectrales, pueden construirse razones entre bandas (band ratios) o índices espectrales que resalten ciertas propiedades físicas del fenómeno estudiado. Estas nuevas características permiten al modelo lineal aproximar mejor la relación entre los datos y la salida, especialmente cuando la relación real no es perfectamente lineal.
1.3.3 Métricas de desempeño
Las métricas de desempeño permiten cuantificar qué tan bien un modelo se ajusta a los datos y predice resultados. Algunas métricas evalúan la calidad del ajuste, otras penalizan la complejidad y algunas miden directamente el error de predicción.
El Coeficiente de Determinación Ajustado \(R^2-ADJ\) es una variante de R² que corrige la tendencia de este último a aumentar al añadir más variables al modelo, incluso si no aportan mejora real. Mientras que el R² tradicional mide la proporción de variabilidad de la variable dependiente explicada por el modelo, el ADJ-R²penaliza la inclusión de predictores irrelevantes, ajustando el valor según el número de observaciones y el número de variables independientes. Esto lo hace más útil para comparar modelos con distinto número de predictores, evitando la falsa impresión de mejora solo por complejidad adicional.
El Criterio de Información de Akaike (AIC) es una métrica utilizada para comparar modelos estadísticos en términos de ajuste y complejidad. Se basa en la teoría de la entropía y busca identificar el modelo que mejor explica los datos con el menor número posible de parámetros. Un valor de AIC más bajo indica un mejor equilibrio entre ajuste y simplicidad. La fórmula general es:
\[AIC = 2k - 2 ln(L)\]
donde \(k\) es el número de parámetros estimados en el modelo y \(L\) es el valor máximo de la función de verosimilitud. A diferencia del ADJ-R² el AIC no tiene un valor máximo fijo y es más útil cuando se comparan múltiples modelos candidatos sobre el mismo conjunto de datos.
El Error Cuadrático Medio (MSE) mide el promedio de los cuadrados de las diferencias entre los valores observados y los predichos por el modelo. Es una métrica sensible a errores grandes, ya que los eleva al cuadrado, y por eso penaliza más las predicciones alejadas de la realidad. Su fórmula es:
\[\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2\]
donde \(y_i\) y son \(\hat{y}_i\) los valores reales y los valores predichos. Un MSE más bajo indica un mejor desempeño del modelo, pero su escala depende de la magnitud de la variable objetivo, por lo que no siempre es directamente interpretable sin contexto.
1.4 Índices espectrales
Los índices espectrales son combinaciones matemáticas de reflectancias en distintas bandas del espectro electromagnético obtenidas por sensores remotos, como satélites o drones. Estos índices realzan ciertas características o propiedades de la superficie observada, facilitando la identificación y monitoreo de elementos como vegetación, agua, suelo o áreas urbanas. Al reducir la información a una sola variable combinada, permiten detectar cambios y evaluar condiciones ambientales con mayor precisión que el análisis de bandas individuales.
1.4.1 NDWI
El Índice de Diferencia Normalizada del Agua (NDWI) es un índice espectral diseñado para resaltar la presencia y extensión de cuerpos de agua en imágenes satelitales. Se calcula utilizando reflectancias en bandas específicas del verde y el infrarrojo cercano, y su fórmula clásica es:
\[NDWI = \frac{R_{\text{verde}} - R_{\text{NIR}}}{R_{\text{verde}} + R_{\text{NIR}}}\]
donde $R_{verde} es la reflectancia en la banda verde y \(R_{NIR}\) la reflectancia en la banda del infrarrojo cercano. Valores altos de NDWI indican presencia probable de agua, ya que el agua absorbe fuertemente en el NIR y refleja más en el verde.
2 Regresión Lineal
La construcción del modelo se lleva a cabo utilizando la versión de Python 3.12 y las librerías previamente especificadas, detallando la función de cada pieza de código, observaciones, avances y descubrimientos.
2.1 Librerías
Para regresión lineal se usan principalmente las librerías de Python numpy, pandas y Scikit-learn.
- Scikit-learn: está en el corazón de las operaciones de ciencias de datos en Python. Ofrece módulos para procesamiento de datos, aprendizaje supervisado y no supervisado, selección y validación de modelos, y métricas de error.
- Pandas: especializada en la manipulación y el análisis de datos. Ofrece estructuras de datos y operaciones para manipular tablas numéricas y series temporales.
- NumPy: provee al usuario con arreglos multidimensionales, junto a un gran conjunto de funciones para operar en estos.
2.2 Lectura de datos
Para la carga, lectura y manipulación de la información la librería Pandas permite convertir un archivo .csv en un DataFrame, estructura de datos que facilita la manipulación de estos. El fragmento de código siguiente agrupa los valores de \(SDD\) con los valores de reflectancia a diferentes longitudes de onda para los cuales coinciden fecha, latitud y longitud y crea un nuevo DataFrame.
El DataFrame obtenido se asemeja a la siguiente tabla:
| \(\mathrm{SDD}\) | \(\mathrm{B01}\) | \(\mathrm{B02}\) | \(\cdots\) | \(\mathrm{B12}\) | \(\mathrm{B8A}\) |
|---|---|---|---|---|---|
| 10 | 0,1728 | 0,1754 | \(\cdots\) | 0,1404 | 0,1869 |
| 15 | 0,1497 | 0,17022 | \(\cdots\) | 0,1113 | 0,1567 |
| \(\vdots\) | \(\vdots\) | \(\vdots\) | \(\cdots\) | \(\vdots\) | \(\vdots\) |
| 125 | 0,1571 | 0,1563 | \(\cdots\) | 0,1419 | 0,1436 |
| 135 | 0,1503 | 0,1591 | \(\cdots\) | 0,1420 | 0,1454 |
2.3 Análisis de los datos
La relación no lineal entre la penetración de la luz y la profundidad de disco de Secchi fue ya descrita por diversos autores que hallan una mejor descripción de esta como una de tipo logaritmica [5]. Se verifica este comportamiento con las bandas B04, B05 y B06:
2.4 Desarrollo del modelo
Para el desarrollo del modelo se implementó la clase RegresionLineal, que contiene el código necesario para la construcción y selección de variables así como para la validación cruzada del modelo. La misma requiere unicamente de los arrays correspondientes a la variable objetivo y a las características con las que estimarla. El script se encuentra disponible acá.
Se realiza la búsqueda de ecuaciones utilizando los valores de reflectancia corregidos por SEN2COR y por ACOLITE de manera separada.
2.4.1 Corrección por SEN2COR
La implementación del método sepwise forward selection permite evaluar la adición de variables al modelo predictivo en una instancia inicial donde no se general características adicionales. Los resultados de cada paso se encuentran resumidos en la siguiente tabla:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.0263 | -0.0263 | 44.7372 | 119.03 |
| 1 | B05 | 0.2761 | 0.2221 | 37.6319 | 113.56 |
| 2 | B02 | 0.7158 | 0.6701 | 23.2318 | 99.69 |
| 3 | B08 | 0.7614 | 0.6989 | 21.3544 | 99.41 |
| 4 | B03 | 0.8165 | 0.7459 | 18.7613 | 97.38 |
| 5 | B04 | 0.8296 | 0.7383 | 17.9258 | 97.47 |
La combinación de B05, B02 y B08 resulta en el mejor ajuste para valores mínimos de RMSE y AIC.
Haciendo uso de la relación logaritmica entre la profundidad de disco y la penetración de la luz descrita y probada previamente se obtiene un modelo con una notable mejoría:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.1888 | -0.1888 | 48.1871 | 121.19 |
| 1 | B05 | 0.2949 | 0.2421 | 36.9801 | 112.79 |
| 2 | B02 | 0.8333 | 0.8063 | 17.7159 | 91.89 |
| 3 | B08 | 0.8379 | 0.7950 | 17.4478 | 93.32 |
| 4 | B11 | 0.8519 | 0.7944 | 16.5047 | 93.56 |
| 5 | B07 | 0.8549 | 0.7768 | 16.5084 | 95.74 |
La mejoría se extiende hasta la adición de la variable B07, después de la cual hay una ligera disminución de R²-ADJ, pero no lo suficientemente significativa como para tratarse de un caso de sobreajuste considerable.
La aplicación del logaritmo puede extenderse a las variables mismas, resultando en un modelo predictivo mucho más certero con una menor cantidad de variables:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.1888 | -0.1888 | 48.1871 | 121.19 |
| 1 | log(B05) | 0.4339 | 0.3916 | 32.8131 | 108.64 |
| 2 | log(B02) | 0.8834 | 0.8644 | 15.0118 | 87.21 |
| 3 | B06 | 0.8934 | 0.8651 | 14.3537 | 87.65 |
| 4 | B08 | 0.9014 | 0.8631 | 13.6956 | 88.17 |
| 5 | B12 | 0.9093 | 0.8606 | 13.0846 | 88.57 |
La combinación de log(B05) y B02 resulta prometedora: el valor de AIC es mínimo, el RMSE es bajo, y el R² alto. Los coeficientes y ordenada de la ecuación resultante son:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.1888 | -0.1888 | 48.1871 | 121.19 |
| 1 | log(B05) | 0.4339 | 0.3916 | 32.8131 | 108.64 |
| 2 | log(B02) | 0.8834 | 0.8644 | 15.0118 | 87.21 |
Los coeficientes y ordenada resultantes de considerar a las primeras dos variables son:
| Variable | Coeficiente |
|---|---|
| log(B05) | -12.260673 |
| log(B02) | 13.030511 |
| Ordenada | 5.275337 |
El uso de cocientes entre las variables otorga una cantidad mucho más extensiva de predictores, observamos que de considerar a estos junto con las variables linealizadas, estos predominan como mejores contribuyentes a la mejora de la predicción:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.1888 | -0.1888 | 48.1871 | 121.19 |
| 1 | B05/B02 | 0.8822 | 0.8734 | 15.0707 | 84.77 |
| 2 | log(B01) | 0.8966 | 0.8798 | 14.0689 | 84.36 |
| 3 | B08/B06 | 0.9091 | 0.8850 | 13.1732 | 84.66 |
| 4 | B8A/B11 | 0.9100 | 0.8750 | 13.0816 | 86.29 |
| 5 | B07/B11 | 0.9087 | 0.8596 | 13.1518 | 88.25 |
Los coeficientes y ordenada resultantes de considerar a las primeras dos variables son:
| Variable | Coeficiente |
|---|---|
| B05/B02 | -4.268558 |
| log(B01) | 0.643369 |
| Ordenada | 9.430494 |
2.4.2 Corrección por ACOLITE
Se repite el proceso que con los datos corregidos por el algoritmo SEN2COR. Se menciona que en la lectura y tratamiento de datos se descartaron los puntos para los cuales los valores de reflectancia eran negativos luego de la corrección.
Partimos de haber hallado que la aplicación del logaritmo a la profundidad de disco resulta en un mejor ajuste. En relación a los valores corregidos por ACOLITE esto devuelve los siguientes resultados:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.2303 | -0.2303 | 47.8282 | 59.46 |
| 1 | B05 | 0.1189 | -0.0378 | 38.8925 | 56.79 |
| 2 | B02 | 0.6160 | 0.4521 | 27.3299 | 51.54 |
| 3 | B08 | 0.7201 | 0.4925 | 23.1573 | 51.70 |
| 4 | B03 | 0.8162 | 0.5245 | 16.6068 | 48.02 |
| 5 | B06 | 0.8334 | 0.2594 | 16.2201 | 49.84 |
Observamos que para las mismas combinaciones los valores de R² y R²-ADJ aumentaron significativamente respecto a aquellos con la corrección por SEN2COR.
Para una relación doblemente logarítimica, obtenemos lo siguiente:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.2303 | -0.2303 | 47.8282 | 59.46 |
| 1 | log(B05) | 0.3287 | 0.2083 | 28.9200 | 52.62 |
| 2 | log(B02) | 0.6888 | 0.5550 | 21.0484 | 49.21 |
| 3 | B01 | 0.7729 | 0.5845 | 18.4856 | 48.91 |
| 4 | log(B08) | 0.8185 | 0.5269 | 15.6606 | 48.45 |
| 5 | B06 | 0.8315 | 0.2347 | 15.0506 | 50.27 |
| Variable | Coeficiente | |
|---|---|---|
| 0 | log(B05) | -5.058134 |
| 1 | log(B02) | 6.861923 |
| 2 | B01 | -18.872053 |
| 3 | Ordenada | 7.577205 |
Donde esta vez se ve una desmejora respecto al modelo corregido por SEN2COR para un modelo de dos variables logarítimicas.
La incorporación de cocientes al abanico de variables devuelve las siguientes métricas:
| Paso | Variable | R² | ADJ-R² | RMSE | AIC |
|---|---|---|---|---|---|
| 0 | Ninguna | -0.2303 | -0.2303 | 47.8282 | 59.46 |
| 1 | B04/B02 | 0.7325 | 0.6853 | 20.3765 | 47.21 |
| 2 | B04/B01 | 0.7795 | 0.6848 | 19.1909 | 48.01 |
| 3 | B07/B06 | 0.8216 | 0.6737 | 15.8882 | 47.67 |
| 4 | B08 | 0.8167 | 0.5294 | 16.0595 | 49.33 |
| 5 | B11/B05 | 0.8592 | 0.3978 | 13.5437 | 48.60 |
| Variable | Coeficiente | |
|---|---|---|
| 0 | B04/B02 | -1.582140 |
| 1 | Ordenada | 6.402011 |
Nuevamente, se ve una desmejora respecto al modelo corregido por SEN2COR. El número de variables se reduce a una.
2.5 Ecuaciones halladas
El par de mejores ecuaciones halladas para cada algoritmo de corrección utilizando la transformación logarítmica fueron las siguientes: \[ log(SDD)_{SEN2COR} = -12.26 \cdot log(B05) + 13.03 \cdot log(B02) + 5.27 \]
\[ log(SDD)_{ACOLITE} = -5.06 \cdot log(B05) + 6.86 \cdot log(B02) -18.87 \cdot B01 \]
Sus ajustes se visualizan de la siguiente manera:
El par de mejores ecuaciones halladas para cada algoritmo utilizando cocientes entre las variables es:
\[ log(SDD)_{SEN2COR} = -4.27\frac{B05}{B02} + 0.64\cdot log(B01)+ 9.43 \]
\[ log(SDD)_{ACOLITE} = -1.58\frac{B04}{B02} + 6.40 \]
Sus ajustes se visualizan de la siguiente manera:
Observamos que la utilización del algoritmo de ACOLITE para la corrección atmosférica ocasiona una desmejora en la estimación.
2.6 Mapas de la estimación
Los mapas generados para cada fecha corresponden al recorte del área de interés del producto satelital corregido por ACOLITE.
3 Métodos de aprendizaje automático
En esta sección se emplean modelos de aprendizaje automático con el objetivo de estimar la profundidad del disco de Secchi a partir de variables predictoras derivadas de la reflectancia satelital. Estos modelos permiten identificar relaciones no lineales y aprovechar la información multiespectral de forma más eficiente que los métodos lineales tradicionales. En particular, se evalúan distintos algoritmos y configuraciones de hiperparámetros para optimizar la capacidad de predicción y analizar la contribución relativa de cada variable a la estimación de la transparencia del agua.
3.1 Random Forest
Random Forest es un algoritmo de aprendizaje automático basado en un conjunto de árboles de decisión entrenados con muestras y variables aleatorias. La combinación de múltiples árboles reduce la varianza y mejora la capacidad de generalización del modelo. Es robusto frente al sobreajuste y adecuado para capturar relaciones no lineales entre las variables.
3.1.1 Hiperparámetros
Los hiperparámetros son valores que se definen antes del entrenamiento de un modelo y controlan cómo aprende. Ajustarlos correctamente permite mejorar el rendimiento y la capacidad de generalización del modelo.
n_estimatorses el número total de árboles que se crearán en el bosque aleatorio. Cada árbol se entrena con una muestra distinta de los datos (si bootstrap=True) y sus predicciones se promedian. Aumentar este número hace que el modelo sea más estable y consistente, reduciendo la varianza y mejorando la precisión. Sin embargo, también incrementa el tiempo de entrenamiento y el uso de memoria, por lo que hay que buscar un equilibrio.max_depthdetermina la cantidad máxima de niveles que puede tener cada árbol, es decir, cuántas divisiones sucesivas puede hacer desde la raíz hasta una hoja. Cuanto más profundo sea un árbol, más patrones complejos puede aprender, pero también corre el riesgo de memorizar el ruido de los datos (sobreajuste). Por el contrario, limitar la profundidad hace que los árboles sean más simples y generalicen mejor, aunque podrían no capturar todas las relaciones presentes en los datos.min_samples_splitindica el número mínimo de muestras necesarias para dividir un nodo en dos ramas. Este parámetro evita que el árbol realice divisiones basadas en muy pocos datos, que podrían ser poco representativos. Valores pequeños permiten divisiones frecuentes, generando árboles más complejos y propensos al sobreajuste, mientras que valores mayores producen divisiones más conservadoras y árboles más suaves que generalizan mejor.min_samples_leafestablece el mínimo de muestras que debe contener una hoja, es decir, un nodo terminal del árbol. Si se permite una sola muestra por hoja, el árbol puede memorizar los datos y generar predicciones muy específicas pero poco generalizables. Aumentar este valor hace que cada hoja represente un promedio de varias observaciones, produciendo predicciones más estables y menos sensibles al ruido.max_featuresdetermina cuántas variables se consideran al buscar la mejor división en cada nodo. Limitar la cantidad de features introduce aleatoriedad en cada árbol, lo que reduce la correlación entre ellos y mejora la generalización del bosque. Por ejemplo, “sqrt” utiliza la raíz cuadrada del total de variables y “log2” utiliza el logaritmo base 2 del total de variables. La diferencia es sutil pero importante: “log2” suele considerar menos variables en cada división, aumentando la diversidad entre árboles, mientras que “sqrt” toma un número ligeramente mayor, equilibrando diversidad y cantidad de información.bootstrapindica si cada árbol se entrena con una muestra aleatoria con reemplazo del conjunto total de datos. Si es True, cada árbol ve datos diferentes, lo que genera más diversidad entre árboles y mejora la capacidad de generalización. Si es False, todos los árboles utilizan el mismo conjunto, lo que puede hacerlos más parecidos entre sí y aumentar la posibilidad de sobreajuste. Además, usar bootstrap permite calcular errores de tipo “out-of-bag” para evaluar el modelo sin necesidad de un conjunto de validación separado.
3.1.2 Resultados
El modelo Random Forest mostró un buen nivel de ajuste y capacidad predictiva, capturando adecuadamente las relaciones entre variables. Sin embargo, presentó un RMSE más alto en comparación con los modelos lineales, lo que indica mayor dispersión en las predicciones y una menor precisión promedio pese a su buen desempeño general. La importancia de cada variable fue la siguiente:
Las bandas B04 y B04 predominan en el ranking, esto puede deberse a que las bandas Red y Red Edge (B05–B06-B07) se ubican justo en la transición entre el rojo y el infrarrojo cercano, donde la reflectancia del agua cambia mucho con la concentración de sedimentos. Esto las hace excelentes indicadores de la turbidez y material particulado suspendido.
Con el objetivo de mejorar el desempeño de los modelos, se incorporaron cocientes entre variables como nuevas características predictoras. Estas relaciones permiten resaltar contrastes espectrales y capturar patrones relativos entre bandas, lo que puede aumentar la sensibilidad del modelo frente a variaciones en la transparencia del agua y mejorar la estimación.
Al introducir los cocientes entre variables como nuevas características, se observa una mejora notable en el desempeño de los modelos. En particular, el RMSE se redujo hasta menos de la mitad, indicando predicciones más precisas y consistentes
3.2 XGBoost
XGBoost (Extreme Gradient Boosting) es un método de boosting que construye árboles de manera secuencial, donde cada uno corrige los errores del anterior. Incorpora técnicas de regularización y optimización que aumentan la precisión y evitan el sobreajuste, ofreciendo un excelente desempeño en tareas de regresión y clasificación.
3.2.1 Hiperparámetros
Además de los hiperparámetros n_estimators y max_depth ya vistos para Random Forest, XGBoost cuenta con los siguientes hiperparámetros:
learning_ratecontrola cuánto contribuye cada árbol nuevo a la predicción total. Valores bajos (por ejemplo, 0.05) hacen que el modelo aprenda más despacio y con mayor precisión, requiriendo más árboles (n_estimators) para converger. Valores altos aceleran el aprendizaje, pero pueden provocar sobreajuste si los árboles son profundos o abundantes.subsampleindica la fracción de muestras de entrenamiento que se usan para construir cada árbol. Un valor menor que 1 introduce aleatoriedad, lo que reduce la correlación entre árboles y mejora la generalización, pero demasiado bajo puede hacer que el modelo no aprenda bien. Un valor de 1 significa que todos los datos se usan en cada árbol, maximizando ajuste pero con menor diversidad.colsample_bytreedefine la fracción de variables (features) consideradas al entrenar cada árbol. Limitar las columnas aumenta la aleatoriedad entre árboles, reduciendo la correlación y el sobreajuste. Por ejemplo, 0.8 significa que cada árbol ve solo el 80% de las variables disponibles.gammaes el mínimo incremento en la función de pérdida requerido para realizar una división adicional en un nodo. Valores mayores hacen que el árbol sea más conservador, evitando divisiones que aporten poca mejora en la predicción, lo que ayuda a reducir sobreajuste.reg_alphaes la penalización de tipo L1 sobre los pesos de los árboles. Ayuda a reducir la complejidad del modelo y puede forzar algunos pesos a cero, promoviendo sparsity y simplificación. Esto es útil si hay muchas variables poco relevantes.reg_lambdaes la penalización de tipo L2 sobre los pesos de los árboles. Contrarresta valores extremos y ayuda a estabilizar el modelo, evitando que algunos árboles dominen la predicción y reduciendo el riesgo de sobreajuste.
3.2.2 Resultados
El modelo XGBoost demuestra desde un inicio un poder predictivo mayor al de Random Forest y a su vez una dispersión mucho menor en las predicciones.
Nuevamente se repite la predominancia de las bandas B04 y B05 en el ranking.
Se observa que la incorporación de cocientes incrementa considerablemente el poder predictivo, a la vez que el RMSE disminuye a valor comparables con el mejor de los valores lineales previamente obtenidos.